#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H
#include <SDL.h>

enum OBJECT_TYPE
{
	BASE = 0,
	PLAYER,
	ENEMY,
	TOWER,
	PROJECTILE,
	BEAM,
	FOLLOWER
};
struct Position
{
	int x;
	int y;
	int width;
	int height;
};

class GameObject
{
public:
	GameObject(void);
	GameObject(OBJECT_TYPE type);
	virtual ~GameObject(void);

	virtual void DestroyData(void) = 0;
	virtual void Copy(void* address) = 0;
	
	virtual void Update(void) = 0;
	virtual void Draw(void) = 0;

	void SetPosition(int x, int y);

	long long GetID(void);
	Position& GetPosition(void);
	OBJECT_TYPE GetObjType(void);
	int GetDistanceTo(GameObject& obj);

	virtual int GetObjSize(void) = 0;
	virtual SDL_Texture* GetTexture(void) = 0;


protected:
	OBJECT_TYPE	m_objectType;
	long long	m_objectID;
private:
	Position	m_position;
};
#endif